1. The Field of the Invention
The present invention relates to computer programming, and more particularly, to the automatic creation of database-interactive software applications. Yet more particularly, the present invention relates to the software-based creation of custom applications resulting from a high-level man-machine dialogue as opposed to traditional computer programming or Computer Assisted Systems Engineering (CASE) technologies.
2. Present State of the Art
Complex, mission-critical business software applications are typically comprised of large numbers of transactions, in addition to a sophisticated end-user interface for each transaction, an intricate relational database, recurring and ad hoc reporting capabilities, server-based computation-intensive software components, and complementary software integration components. Due to the complexity of the application and its components; difficulties associated with recruiting, managing, and retaining highly technical staff, and uncertainties of managing large projects in complex and changing business environments; the design, development, and implementation of mission-critical software applications is expensive, highly risky, and often unsuccessful.
Furthermore, as mission-critical software applications are improved and evolve, they become increasingly complex thus requiring additional economic and physical resources to enhance, debug, and maintain. Even relatively simple or minor modifications to mission-critical software applications require extensive understanding and re-testing of the revised software application.
Additionally, programming methodologies associated with software application development have changed very little over the past two decades. Even though the commercial marketplace is filled with a variety of development tools and new programming languages, mission-critical software applications continue to require considerable programming--in at least one programming language. Improvement in programming productivity is impeded by traditional paradigms related to traditional tasks such as tedious and time-consuming design document creation, low-level application coding, manual testing and debugging of written code, and the error-prone nature of software application correction and improvement.
Other deficiencies inherent in traditional complex software application development result from variations in quality through all phases of development such as requirements definition, design specification, programming, testing, and all related communications between customers, end-users, designers, systems analysts, programmers, and testers. For example, software application programmers are often isolated or buffered by management or marketing from direct interaction with the end-user or customer, and therefore, may not fully appreciate or comprehend the design requirements as anticipated by the end-user. Also, when software development spans the term of many months or years, design requirements may change as marketplace trends change the end-users' business needs. If the design of the software application is unable to respond to business dynamics, then the software application becomes obsolete.
Furthermore, end-users may not entirely conceptualize or visualize the desired software application end-product or, even more disastrously, necessary design requirements may not even materialize or emerge until testing, integration, or delivery of the software application. As is frequently the case, custom application end-users do not or can not adequately express the desired "look-and-feel" or functionality of the desired custom application software until they first see a version of the "final" product. At such a juncture, an end-user is generally more capable of expressing negative preferences by enumerating aspects of the "final" version that they prefer to be different. If at such a juncture, as is typically the case, substantial resources have been invested in the "final" version, then the end-user must choose either to tolerate a less than ideal "final" version of the product or to invest yet additional resources (i.e., time and money) into conforming the "final" version with newly-discovered or poorly-communicated preferences.
In addition to communication breakdowns, quality variations are frequently introduced into software applications through inherent capability variations of software programmers. For example, some software application programmers may be less oriented to details and thereby inject defects or bugs into the software application that directly affect quality. Yet other programmers may personally stylize their software components thereby becoming functionally and visually inconsistent with other portions of the software application resulting in an inconsistent look-and-feel to the software application. Such personalized inconsistencies may affect perceived and actual quality and performance.
With respect to complex software application design and development, as hardware processing power economically increases, new software applications become increasingly more complex and sophisticated thereby antiquating older software applications. As a result, traditional software application design and programming techniques provide less predictable and protracted results at an increasingly unacceptable level of cost and associated development risk.
Accordingly, what is needed is a method and system for automatic or highly automated creation of complex database software applications without exhaustive, traditional, detailed programming. Automated creation of complex software applications without the associated inconsistencies and quality variations resulting from programmer variation, facilitates implementation or prototyping of complex software applications in an expedient manner relative to traditional programming philosophies. Automated creation of software applications permits an application designer to prototype custom software applications in relatively little time, thus producing a nearly final version of the custom software application for immediate review by an end-user. Additionally, automated creation of software allows the application designer to expediently incorporate feedback, both likes and dislikes, into subsequent iterations of the software application that incorporate revised preferences.